using Microsoft.Expression.Media;
using System;
using System.Windows;
namespace Microsoft.Expression.Controls
{
	public sealed class LineArrow : CompositeShape, IGeometrySourceParameters, ILineArrowGeometrySourceParameters
	{
		public static readonly DependencyProperty BendAmountProperty = DependencyProperty.Register("BendAmount", typeof(double), typeof(LineArrow), new DrawingPropertyMetadata(0.5, DrawingPropertyMetadataOptions.AffectsRender));
		public static readonly DependencyProperty StartArrowProperty = DependencyProperty.Register("StartArrow", typeof(ArrowType), typeof(LineArrow), new DrawingPropertyMetadata(ArrowType.NoArrow, DrawingPropertyMetadataOptions.AffectsRender));
		public static readonly DependencyProperty EndArrowProperty = DependencyProperty.Register("EndArrow", typeof(ArrowType), typeof(LineArrow), new DrawingPropertyMetadata(ArrowType.Arrow, DrawingPropertyMetadataOptions.AffectsRender));
		public static readonly DependencyProperty StartCornerProperty = DependencyProperty.Register("StartCorner", typeof(CornerType), typeof(LineArrow), new DrawingPropertyMetadata(CornerType.TopLeft, DrawingPropertyMetadataOptions.AffectsRender));
		public static readonly DependencyProperty ArrowSizeProperty = DependencyProperty.Register("ArrowSize", typeof(double), typeof(LineArrow), new DrawingPropertyMetadata(10.0, DrawingPropertyMetadataOptions.AffectsRender));
		public double BendAmount
		{
			get
			{
				return (double)base.GetValue(LineArrow.BendAmountProperty);
			}
			set
			{
				base.SetValue(LineArrow.BendAmountProperty, value);
			}
		}
		public ArrowType StartArrow
		{
			get
			{
				return (ArrowType)base.GetValue(LineArrow.StartArrowProperty);
			}
			set
			{
				base.SetValue(LineArrow.StartArrowProperty, value);
			}
		}
		public ArrowType EndArrow
		{
			get
			{
				return (ArrowType)base.GetValue(LineArrow.EndArrowProperty);
			}
			set
			{
				base.SetValue(LineArrow.EndArrowProperty, value);
			}
		}
		public CornerType StartCorner
		{
			get
			{
				return (CornerType)base.GetValue(LineArrow.StartCornerProperty);
			}
			set
			{
				base.SetValue(LineArrow.StartCornerProperty, value);
			}
		}
		public double ArrowSize
		{
			get
			{
				return (double)base.GetValue(LineArrow.ArrowSizeProperty);
			}
			set
			{
				base.SetValue(LineArrow.ArrowSizeProperty, value);
			}
		}
		protected override IGeometrySource CreateGeometrySource()
		{
			return new LineArrowGeometrySource();
		}
		public LineArrow()
		{
			base.set_DefaultStyleKey(typeof(LineArrow));
		}
		protected override Size MeasureOverride(Size availableSize)
		{
			return base.MeasureOverride(new Size(0.0, 0.0));
		}
	}
}
